//
// Created by PC on 2024/10/27.
// OJ:https://hydro.ac/d/teddycode/p/GESP5009 PASS
/*
 * 3.1.1 题面描述
小杨有 n种不同的武器，他对第i 种武器的初始熟练度为ci 。
小杨会依次参加 m场战斗，每场战斗小杨只能且必须选择一种武器使用，假设小杨使用了第 i种武器参加了第 j场
战斗，战斗前该武器的熟练度为 c'i，则战斗后小杨对该武器的熟练度会变为 c'i+aj。需要注意的是， aj可能是正数， 0或负数，这意味着小杨参加战斗后对武器的熟练度可能会提高，也可能会不变，还有可能降低。
小杨想请你编写程序帮他计算出如何选择武器才能使得 m场战斗后，自己对n 种武器的熟练度的最大值尽可能大。
3.1.2 输入格式
第一行包含两个正整数 n,m，含义如题面所示。
第二行包含n 个正整数c1,c2,...,cn ，代表小杨对武器的初始熟练度。
第三行包含 m个正整数a1,a2....,am ，代表每场战斗后武器熟练度的变化值。
3.1.3 输出格式
输出一个整数，代表m场战斗后小杨对 n种武器的熟练度的最大值最大是多少。
3.1.4 样例1
 input:
 2 2
 9 9
 1 -1
 output:
 10
 子任务编号 数据点占比
        n       m
1 20%  =1       <=10^5
2 20% <=10^5    =2
3 60% <=10^5    <=10^5
一种最优的选择方案为，第一场战斗小杨选择第一种武器，第二场战斗小杨选择第二种武器。
对于全部数据，保证有1<=n,m<=10^5, -10^4<=ci,ai<=10^4 。
 * */


#include <iostream>

using namespace std;

int main()
{
    int n=2,m=2;
    cin>>n>>m;
    int c,a;  // c: 武器初始值 a:战斗后的结果
    int cmax=-10000;
    for (int i = 0; i < n; ++i)
    {
        cin>>c;
        if(c>cmax)
            cmax=c;
    }
    for (int i = 0; i < m; ++i)
    {
        cin>>a;
        // 需要考虑n为1的情况,n==1时所有战斗都要参加
        if(n==1 || a>0)
            cmax+=a;
    }
    cout<<cmax;
    return 0;
}